import axios from 'axios'
import { ElMessage } from 'element-plus'
import router from '@/router'
import { exitLogin } from './api'


// 1. 获取环境变量
// 创建axios实例
// const service = axios.create({
//   baseURL: import.meta.env.VITE_BASE_API, // 从环境变量获取基础URL
//   timeout: 10000 // 请求超时时间
// })
const service = axios.create({
  baseURL: "/api", // 从环境变量获取基础URL
  timeout: 10000 // 请求超时时间
})
// 配置post请求头
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
// 请求拦截器
service.interceptors.request.use(
  config => {
    config.headers = {
      'Content-Type': 'application/json',
      'X-Client-Type': 'web',
      ...config.headers // 允许调用时覆盖
    }
    const token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  async response => {
    const res = response.data

    if (res.code !== 200) {
      ElMessage.error(res.msg)
      // 特殊状态码处理
      if (res.code === 401) {
        // 未授权，跳转登录页
        router.push('/login')
      } else if (res.code === 403) {
        // 无权限
        router.push('/403')
      } else if (res.code == -99999) {
          setTimeout(() => {
            router.push('/login')
          // 点击退出登录
          // 清空loacalstorage
            localStorage.clear();
            // 刷新页面
            sessionStorage.clear()
            window.location.reload()
          }, 500)
      }
      return Promise.reject(new Error(res.msg))
    } else {
      return res
    }

  },
  error => {
    return Promise.reject(error)
  }
)
// 添加请求拦截器，会在发送请求之前执行相应的需求
// 应用场景：携带token 
// service.interceptors.request.use(
//     config=>{
//         // 携带token 不是给login用的
//         let token = localStorage.getItem('token')
//         if(token){
//             // config.headers.common['Authorization'] = 'Bearer '+token;
//             // 如果上面格式报错，替换成下面这种形式
//             config.headers.Authorization = 'Bearer '+ token;
//         }
//         return config;
//     },
//     function(error){
//         return Promise.reject(error)
//     }
// )
// // 添加响应拦截器，会在返回数据后先执行相应的需求
// // 应用场景：集中处理错误响应
// service.interceptors.response.use((response)=>{
//         let {code} = response.data;
//         if(code === 401){
//             // token失效
//             alert("token失效,请重新登录");
//             // location.href("http://localhost:5173/login")
//             window.location="/login";
//             // 删除token
//             localStorage.clear();
//             // 刷新页面
//             window.localStorage.reload();
//             return;
//         }
//         return response;
//         },function(error){
//             console.log("res-err",error);
//             return Promise.reject(error);
//     })
export default service